package cn.funeralobjects.upms.repository;

import cn.funeralobjects.upms.entity.EUserGroup;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;

import java.util.Collection;
import java.util.List;

/**
 * 用户组的
 *
 * @author FuneralObjects
 * Create date: 2019/9/10 2:23 AM
 */
public interface UserGroupRepository extends JpaRepository<EUserGroup, EUserGroup> {

    /**
     * 过滤出符合条件的用户id
     *
     * @param groupId 组id
     * @param userIds 用户id集合
     * @return 符合条件的用户id集合
     */
    @Query("SELECT userId FROM EUserGroup WHERE groupId = :groupId AND userId in :userIds")
    List<Integer> filterUserIdByGroupId(Integer groupId, Collection<Integer> userIds);

    /**
     * 过滤出符合条件的组id
     *
     * @param userId   用户id
     * @param groupIds 组id集合
     * @return 符合条件的组id集合
     */
    @Query("SELECT groupId FROM EUserGroup WHERE userId = :userId AND groupId in :groupIds")
    List<Integer> filterGroupIdByUserId(Integer userId, Collection<Integer> groupIds);

    /**
     * 通过组id删除关联关系
     *
     * @param groupId 组id
     */
    @Modifying
    @Query("DELETE FROM EUserGroup WHERE groupId = :groupId")
    void deleteAllByGroupId(Integer groupId);

    /**
     * 通过用户id删除关联关系
     *
     * @param userId 用户id
     */
    @Modifying
    @Query("DELETE FROM EUserGroup WHERE userId = :userId")
    void deleteAllByUserId(Integer userId);
}
